package com.tulingxueyuan.mall.modules.pms.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tulingxueyuan.mall.modules.pms.model.PmsProduct;
import com.tulingxueyuan.mall.modules.pms.model.PmsProductFarmer;
import com.tulingxueyuan.mall.modules.pms.mapper.PmsProductFarmerMapper;
import com.tulingxueyuan.mall.modules.pms.model.dto.ProductFarmerConditionDTO;
import com.tulingxueyuan.mall.modules.pms.model.dto.ProductFarmerSaveParamsDTO;
import com.tulingxueyuan.mall.modules.pms.model.dto.ProductFarmerUpdateInitDTO;
import com.tulingxueyuan.mall.modules.pms.service.PmsProductFarmerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author Bin
 * @since 2022-08-12
 */
@Service
public class PmsProductFarmerServiceImpl extends ServiceImpl<PmsProductFarmerMapper, PmsProductFarmer> implements PmsProductFarmerService {

    @Autowired
    PmsProductFarmerMapper productFarmerMapper;

    /**
     * 已重写
     * 获取商品列表-数据列表 数据
     * @param pageNum
     * @param pageSize
     * @return
     */
//    @Override
//    public Page list(Integer pageNum, Integer pageSize) {
//        Page page = new Page(pageNum, pageSize);
//
//        return this.page(page);
//    }

    /**
     * 获取农户列表-数据列表数据（重写）
     * @param condition
     * @return
     */
    @Override
    public Page list(ProductFarmerConditionDTO condition) {
        Page page = new Page(condition.getPageNum(), condition.getPageSize());
        QueryWrapper<PmsProductFarmer> queryWrapper = new QueryWrapper<>();
        LambdaQueryWrapper<PmsProductFarmer> lambdaQueryWrapper = queryWrapper.lambda();
        // 农户姓名（模糊查询）
        if (!StrUtil.isBlank(condition.getName())){
            lambdaQueryWrapper.like(PmsProductFarmer::getName,condition.getName());
        }
        // 手机号码（模糊查询）
        if (!StrUtil.isBlank(condition.getPhoneNumber())){
            lambdaQueryWrapper.like(PmsProductFarmer::getPhoneNumber,condition.getPhoneNumber());
        }
        return this.page(page,lambdaQueryWrapper);
    }

    /**
     * 添加农户
     * @param productFarmerSaveParamsDTO
     * @return
     */
    @Override
    @Transactional
    public boolean create(ProductFarmerSaveParamsDTO productFarmerSaveParamsDTO) {
        // 保存农户基本信息 --主表
        PmsProductFarmer productFarmer = productFarmerSaveParamsDTO;
        productFarmer.setFarmerId(null);
        boolean result = this.save(productFarmer);
        return result;
    }

    /**
     * 获取编辑状态下的农户信息
     * @param farmerId
     * @return
     */
    @Override
    public ProductFarmerUpdateInitDTO getUpdateInfo(Long farmerId) {
        return productFarmerMapper.getUpdateInfo(farmerId);
    }

    /**
     * 农户列表-编辑—保存
     * @param productFarmerSaveParamsDTO
     * @return
     */
    @Override
    public boolean update(ProductFarmerSaveParamsDTO productFarmerSaveParamsDTO) {
        // 保存已编辑的数据
        PmsProductFarmer productFarmer = productFarmerSaveParamsDTO;
        boolean result = this.updateById(productFarmer);
        return result;
    }

}
